Micron Document
Livres et Wikis | Archives | Info


JavaScript
part 14/19 · 71.4 KB total
layout: Wide · Narrow · Centered
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Les variables déclarées avec le mot-clé let ou const (ECMAScript 6) ne sont pas pré-initialisées, et donc inaccessibles avant leur déclaration. Si une variable déclarée avec le mot-clé let ne possède pas d'initialiseur, elle est initialisée à la valeur undefined lors de l'évaluation de la déclaration, sinon elle est initialisée avec l'initialiseur lors de l'évaluation de la déclaration. Si une variable déclarée avec le mot-clé const ne possède pas d'initialiseur, une erreur est levée lors de l'évaluation de la déclaration, sinon elle est initialisée avec l'initialiseur lors de l'évaluation de la déclaration :

// 1. Avec initialiseur
alert(maVariable1); // erreur : accès impossible avant l'initialisation
alert(maVariable2); // erreur : accès impossible avant l'initialisation
let maVariable1 = 5;
const maVariable2 = 8;
alert(maVariable1); // affiche 5
alert(maVariable2); // affiche 8
// 2. Sans initialiseur
alert(maVariable3); // erreur : accès impossible avant l'initialisation
alert(maVariable4); // erreur : accès impossible avant l'initialisation
let maVariable3;
const maVariable4; // erreur : initialisation manquante
alert(maVariable3); // affiche undefined
alert(maVariable4); // erreur : initialisation manquante

De plus, JavaScript autorise la redéclaration de la même variable dans sa portée lexicale, mais uniquement avec le mot-clé var :

var maVariable = 2;
var maVariable = 9;

Variables globales

En JavaScript, il existe plusieurs façons de déclarer une variable globale, et certaines interagissent avec l'objet global (nommé window dans les navigateurs) :

var maVariable1 = 0; // propriété ou méthode de l'objet global qui ne peut pas être détruite par l'opérateur delete
let maVariable2 = 0; // pas une propriété ou méthode de l'objet global
const maVariable3 = 0; // pas une propriété ou méthode de l'objet global
maVariable4 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete
window.maVariable5 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete
this.maVariable6 = 0; // propriété ou méthode de l'objet global qui peut être détruite par l'opérateur delete

Une variable initialisée sans déclaration est traitée comme une variable globale :

function maFonction() {
maVariable = 5;
}
maFonction();
alert(maVariable); // affiche 5

Fonctions anonymes

Les fonctions anonymes sont, comme leur nom l'indique, des fonctions qui ne portent pas de nom :

setTimeout(function () {
alert('Trois secondes se sont écoulées.');
}, 3000);

Celle-ci est donnée en paramètre à la fonction setTimeout, qui permet de définir une durée avant d'afficher le message.

Fermetures lexicales

Un environnement lexical est l'ensemble des variables valides dans une partie du programme. Il est composé de l'environnement lexical interne (les variables locales) et d'une référence à l'environnement lexical externe (les variables non locales).


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────